// 1发送请求获取数据
// 2点击轮播图 预览大图
  // 1给轮播图绑定点击事件
  // 2调用小程序的API previewImage
  // 3点击 加入购物车
  //   1先绑定点击事件
  //   2获取缓存中的购物车数据 数组格式
  //   3先判断 当前的商品是否已经存在于 购物车
  //   4已经存在 修改商品数据  执行购物车数量++ 重新把购物车数组 填充回缓存中
  //   5不存在与购物车的数组中 直接给购物车数量添加一个新元素 新元素 带上 购买数量属性 num
  //   6弹出提示
  //  4 商品收藏
  //    1 页面onShow的时候 加载缓存中的商品收藏的数据
  //    2 判断当前商品是不是被收藏
  //      1是 改变页面的图标
  //      2 不是..
  //    3点击商品收藏按钮
  //      1 判断该商品是否存在于缓存数组中
  //      2已经存在 把该商品删除
  //      3 没有存在 把商品添加到收藏数组中 存入到缓存中即可
import { request } from "../../request/index.js"
//这里使用ES7 的async await 需要这个,不能app.js全局使用,必须单独使用
//https://github.com/yangsuai/regeneratorRuntime
import regeneratorRuntime from '../../lib/runtime/runtime.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //详情存储数据
    goodsObj:{},
    isCollect:false

  },
  //商品对象
  GoodsInfo:{

  },
  
  onShow: function () {
    let pages = getCurrentPages();
    let currentPage = pages[pages.length-1];

    let options = currentPage.options;
    const {goods_id} = options;
    console.log(goods_id)
    this.getGoodsDetail(goods_id)

    
  },
  //获取商品详情数据
  async getGoodsDetail(goods_id){
      //获取商品详情
    const goodsObj = await request({ url:"/goods/detail", data: {goods_id}})

    this.GoodsInfo = goodsObj;

    //获取缓存中的商品收藏数组
    let collect = wx.getStorageSync("collect") || [];
    //判断当前商品是否被收藏
    let isCollect = collect.some(v => v.goods_id === this.GoodsInfo.goods_id)

    this.setData({ 
      goodsObj:{
        goods_name:goodsObj.goods_name,
        goods_price: goodsObj.goods_price,
        //iphone部分手机不识别的webp图片格式
        //最好找到后台 确保后台存在 1.webp => 1.jpg
        goods_introduce: goodsObj.goods_introduce.replace(/\.webp/g,'.jpg'),
        pics: goodsObj.pics
      },isCollect
    
    })

  },
  //点击图片预览函数 
  handlePreviewImage(e){
    const urls = this.GoodsInfo.pics.map(v=>v.pics_mid)
    //e事件,currentTarget当前目标,dataset数据集,url传值属性
    const current = e.currentTarget.dataset.url;
    //图片预览API
    wx.previewImage({
      current: current,
      urls: urls
    })
  },
  //加入购物车函数
  handleCartAdd(){
    //获取本地存储库的cart数组没有返回空的数组
    let cart = wx.getStorageSync("cart")||[];
    //判断商品是否存在于 数组购物车商品中
    let index = cart.findIndex(v=>v.goods_id === this.GoodsInfo.goods_id)

    if (index===-1){
      //不存在  第一次添加
      this.GoodsInfo.num = 1;
      this.GoodsInfo.checked = true;
      cart.push(this.GoodsInfo);
    }else{
      //已经存在购物车数据  执行num++;
      cart[index].num++;
    }
    //把购物车重新添加回缓存中
    wx.setStorageSync("cart", cart);
    //弹窗提示
    wx-wx.showToast({
      title: '加入成功',
      icon: 'success',
      //true防止 用户手抖 疯狂点击按钮
      mask: true
    })
  },
  //立即购买
  handlePay(e){
    //获取本地存储库的cart数组没有返回空的数组
    let cart = wx.getStorageSync("cart") || [];
    //判断商品是否存在于 数组购物车商品中
    let index = cart.findIndex(v => v.goods_id === this.GoodsInfo.goods_id)

    if (index === -1) {
      //不存在  第一次添加
      this.GoodsInfo.num = 1;
      this.GoodsInfo.checked = true;
      cart.push(this.GoodsInfo);
    } else {
      //已经存在购物车数据  执行num++;
      cart[index].num++;
    }
    //把购物车重新添加回缓存中
    wx.setStorageSync("cart", cart);
    //弹窗提示
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      //true防止 用户手抖 疯狂点击按钮
      mask: true
    })
    //跳转到购物车
    wx.switchTab({
      url: '/pages/cart/index'
    })
  },

  //点击商品收藏图标
  handleCollect(e){
    let isCollect = false;
    //获取缓存中的商品收藏数组
    let collect = wx.getStorageSync("collect")||[];
    //判断该商品是否被收藏过
    let index = collect.findIndex(v=>v.goods_id === this.GoodsInfo.goods_id)
    // 当index = -1  表示 已经收藏过了
    if(index !== -1){
      // 能找到 已经收藏过了 在数组中删除该商品
      collect.splice(index,1);
      isCollect = false;
      wx.showToast({
        title: '取消成功',
        icon: 'success',
        mask: true
      });
    }else{
      //没有收藏过
      collect.push(this.GoodsInfo);
      isCollect = true;
      wx.showToast({
        title: '收藏成功',
        icon: 'success',
        mask: true
      });
    }
    // 把数组存入到缓存中
    wx.setStorageSync("collect",collect);
    // 修改data中的属性 isCollect
    this.setData({isCollect});
  }
 
})